স্প্রিং বুট ক্লায়েন্টের টেস্টিং মূলত REST API ক্লায়েন্ট যেমন RestTemplate
, WebClient
, বা থার্ড-পার্টি সার্ভিসের সাথে ইন্টারঅ্যাকশন নিশ্চিত করতে ব্যবহৃত হয়। এখানে Spring Boot
-এর বিভিন্ন টুল এবং টেকনিক ব্যবহার করে টেস্টিং প্রক্রিয়া ব্যাখ্যা করা হয়েছে।
pom.xml
এ নিচের ডিপেন্ডেন্সি যুক্ত করুন:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.github.tomakehurst</groupId>
<artifactId>wiremock</artifactId>
<scope>test</scope>
</dependency>
Mockito
ব্যবহার করে RestTemplate
মক করা যায়।
import static org.mockito.Mockito.*;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.web.client.RestTemplate;
public class MyServiceTest {
@Mock
private RestTemplate restTemplate;
@InjectMocks
private MyService myService;
public MyServiceTest() {
MockitoAnnotations.openMocks(this);
}
@Test
public void testCallExternalService() {
// Mock API Response
String expectedResponse = "Mock Response";
when(restTemplate.getForObject("http://example.com/api", String.class)).thenReturn(expectedResponse);
// Actual Call
String actualResponse = myService.callExternalService();
// Assertion
assertEquals(expectedResponse, actualResponse);
}
}
WebClient
টেস্ট করতে WebClient.Builder
মক করা হয়।
import static org.mockito.Mockito.*;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;
public class MyServiceTest {
@Mock
private WebClient.Builder webClientBuilder;
@Mock
private WebClient webClient;
@Mock
private WebClient.RequestHeadersUriSpec<?> requestHeadersUriSpec;
@Mock
private WebClient.ResponseSpec responseSpec;
@InjectMocks
private MyService myService;
@BeforeEach
public void setup() {
MockitoAnnotations.openMocks(this);
when(webClientBuilder.build()).thenReturn(webClient);
when(webClient.get()).thenReturn(requestHeadersUriSpec);
when(requestHeadersUriSpec.uri("http://example.com/api")).thenReturn(requestHeadersUriSpec);
when(requestHeadersUriSpec.retrieve()).thenReturn(responseSpec);
when(responseSpec.bodyToMono(String.class)).thenReturn(Mono.just("Mock Response"));
}
@Test
public void testCallExternalService() {
String response = myService.callExternalService();
assertEquals("Mock Response", response);
}
}
WireMock ব্যবহার করে একটি API সার্ভার মক করা যায়।
import static com.github.tomakehurst.wiremock.client.WireMock.*;
import com.github.tomakehurst.wiremock.WireMockServer;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import static org.junit.jupiter.api.Assertions.assertEquals;
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class MyServiceIntegrationTest {
private WireMockServer wireMockServer;
@Autowired
private TestRestTemplate restTemplate;
@BeforeEach
public void setup() {
wireMockServer = new WireMockServer(8081);
wireMockServer.start();
configureFor("localhost", 8081);
}
@AfterEach
public void teardown() {
wireMockServer.stop();
}
@Test
public void testIntegrationWithWireMock() {
stubFor(get(urlEqualTo("/api"))
.willReturn(aResponse()
.withHeader("Content-Type", "application/json")
.withBody("Mock Response")));
String response = restTemplate.getForObject("http://localhost:8081/api", String.class);
assertEquals("Mock Response", response);
}
}
TestRestTemplate
ব্যবহার করে রিয়েল API কল পরীক্ষা করা যায়।
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import static org.junit.jupiter.api.Assertions.assertEquals;
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class MyServiceE2ETest {
@Autowired
private TestRestTemplate restTemplate;
@Test
public void testEndToEndService() {
String response = restTemplate.getForObject("/api/external", String.class);
assertEquals("Expected Response", response);
}
}
MockMvc
ব্যবহার করে REST API এর টেস্ট করা হয়।
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.servlet.MockMvc;
@SpringBootTest
@AutoConfigureMockMvc
public class MyControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
public void testApiEndpoint() throws Exception {
mockMvc.perform(get("/api/external"))
.andExpect(status().isOk())
.andExpect(content().string("Expected Response"));
}
}
স্প্রিং বুট ক্লায়েন্ট টেস্টিংয়ের জন্য Mockito
, WireMock
, এবং TestRestTemplate
সহ বিভিন্ন টুল ব্যবহার করা যায়। ইউনিট, ইনটিগ্রেশন, এবং এন্ড-টু-এন্ড টেস্টিং একত্রিত করে আপনার ক্লায়েন্ট সার্ভিসের সঠিক কার্যকারিতা নিশ্চিত করতে পারেন।
Spring Boot-এ RestTemplate
এবং WebClient
এর জন্য Unit Testing করতে হলে আপনাকে Mocking টুল (যেমন: Mockito) ব্যবহার করতে হবে। নিচে RestTemplate
এবং WebClient
-এর জন্য Unit Testing-এর বিস্তারিত উদাহরণ দেওয়া হলো।
JUnit এবং Mockito ব্যবহার করুন।
Maven Dependency:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
@Service
public class ApiService {
private final RestTemplate restTemplate;
public ApiService(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
public String fetchData() {
String url = "https://api.example.com/data";
return restTemplate.getForObject(url, String.class);
}
}
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.web.client.RestTemplate;
import static org.mockito.Mockito.*;
import static org.junit.jupiter.api.Assertions.*;
@SpringBootTest
public class ApiServiceTest {
@Mock
private RestTemplate restTemplate;
@InjectMocks
private ApiService apiService;
@Test
public void testFetchData() {
// Mock response
String mockResponse = "Mocked API Response";
String url = "https://api.example.com/data";
// Define behavior for mock RestTemplate
when(restTemplate.getForObject(url, String.class)).thenReturn(mockResponse);
// Call the method
String result = apiService.fetchData();
// Assertions
assertEquals(mockResponse, result);
verify(restTemplate, times(1)).getForObject(url, String.class);
}
}
import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;
@Service
public class ApiService {
private final WebClient webClient;
public ApiService(WebClient.Builder webClientBuilder) {
this.webClient = webClientBuilder.baseUrl("https://api.example.com").build();
}
public Mono<String> fetchData() {
return webClient.get()
.uri("/data")
.retrieve()
.bodyToMono(String.class);
}
}
WebClient-এর জন্য
WebClient.Builder` Mock করা হয়।
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import org.mockito.InjectMocks;
import org.mockito.MockitoAnnotations;
import org.springframework.web.reactive.function.client.WebClient;
import org.springframework.web.reactive.function.client.ClientResponse;
import reactor.core.publisher.Mono;
import static org.mockito.Mockito.*;
import static org.junit.jupiter.api.Assertions.*;
public class ApiServiceTest {
@Mock
private WebClient.Builder webClientBuilder;
@Mock
private WebClient webClient;
@Mock
private WebClient.RequestHeadersUriSpec<?> requestHeadersUriSpec;
@Mock
private WebClient.ResponseSpec responseSpec;
@InjectMocks
private ApiService apiService;
@Test
public void testFetchData() {
// Mock API Response
String mockResponse = "Mocked API Response";
// Mock WebClient behavior
when(webClientBuilder.baseUrl("https://api.example.com")).thenReturn(webClientBuilder);
when(webClientBuilder.build()).thenReturn(webClient);
when(webClient.get()).thenReturn(requestHeadersUriSpec);
when(requestHeadersUriSpec.uri("/data")).thenReturn(requestHeadersUriSpec);
when(requestHeadersUriSpec.retrieve()).thenReturn(responseSpec);
when(responseSpec.bodyToMono(String.class)).thenReturn(Mono.just(mockResponse));
// Call the method
String result = apiService.fetchData().block();
// Assertions
assertEquals(mockResponse, result);
verify(webClient, times(1)).get();
verify(requestHeadersUriSpec, times(1)).uri("/data");
}
}
Spring Boot ক্লায়েন্ট API ইন্টিগ্রেশন টেস্টের জন্য MockMVC ব্যবহার করতে পারেন।
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.servlet.MockMvc;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@SpringBootTest
@AutoConfigureMockMvc
public class ApiControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
public void testGetData() throws Exception {
mockMvc.perform(get("/data"))
.andExpect(status().isOk());
}
}
Mockito
ব্যবহার করে getForObject
, postForObject
ইত্যাদি মক করা হয়।WebClient.Builder
এবং সংশ্লিষ্ট মেথডগুলো Mock করতে হয়।এভাবে আপনি RestTemplate
এবং WebClient
এর জন্য Unit Testing করতে পারেন।
Spring Boot ক্লায়েন্টে (Spring Boot Client) Mockito এবং MockWebServer ব্যবহার করে API টেস্টিং একটি কার্যকর পদ্ধতি। এই পদ্ধতিতে, MockWebServer ব্যবহার করে একটি কৃত্রিম সার্ভার তৈরি করা হয়, যা API রেসপন্স সিমুলেট করতে পারে। Mockito ব্যবহার করে সার্ভিস বা ডিপেন্ডেন্সি গুলো মক করা যায়।
<dependencies>
<!-- Spring Boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<!-- JUnit and Mockito -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
<!-- MockWebServer -->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>mockwebserver</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.client.WebClient;
@Service
public class ApiService {
private final WebClient webClient;
public ApiService(WebClient webClient) {
this.webClient = webClient;
}
public String fetchData(String endpoint) {
return webClient.get()
.uri(endpoint)
.retrieve()
.bodyToMono(String.class)
.block();
}
}
import okhttp3.mockwebserver.MockResponse;
import okhttp3.mockwebserver.MockWebServer;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.MockitoAnnotations;
import org.springframework.web.reactive.function.client.WebClient;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class ApiServiceTest {
private MockWebServer mockWebServer;
@InjectMocks
private ApiService apiService;
@BeforeEach
void setUp() {
MockitoAnnotations.openMocks(this);
mockWebServer = new MockWebServer();
mockWebServer.start();
apiService = new ApiService(WebClient.builder().baseUrl(mockWebServer.url("/").toString()).build());
}
@AfterEach
void tearDown() throws Exception {
mockWebServer.shutdown();
}
@Test
void testFetchData() {
// Mock Response
String mockResponseBody = "{\"message\": \"Hello, World!\"}";
mockWebServer.enqueue(new MockResponse()
.setBody(mockResponseBody)
.addHeader("Content-Type", "application/json"));
// Call the method
String response = apiService.fetchData("/test");
// Assertions
assertEquals(mockResponseBody, response);
}
}
MockWebServer.url("/")
ব্যবহার করে WebClient-এর বেস URL সেট করা হয়।@Test
void testFetchDataWithErrorResponse() {
// Mock Response with Error
mockWebServer.enqueue(new MockResponse()
.setResponseCode(404)
.setBody("{\"error\": \"Not Found\"}"));
// Call the method
String response = apiService.fetchData("/not-found");
// Assertions
assertEquals(null, response); // WebClient null রিটার্ন করতে পারে।
}
MockWebServer থেকে রিকোয়েস্টের হেডার যাচাই করা যায়:
RecordedRequest recordedRequest = mockWebServer.takeRequest();
assertEquals("Bearer my-token", recordedRequest.getHeader("Authorization"));
MockResponse
এ কৃত্রিম delay যোগ করে টাইমআউট টেস্ট করতে পারেন:
mockWebServer.enqueue(new MockResponse()
.setBody("Delayed Response")
.setBodyDelay(5, TimeUnit.SECONDS));
Mockito এবং MockWebServer ব্যবহার করে Spring Boot ক্লায়েন্টের জন্য API টেস্টিং খুবই কার্যকর। এই পদ্ধতিতে:
যদি আপনি নির্দিষ্ট কোনো কনফিগারেশন বা টেস্টিং ইস্যু নিয়ে সাহায্য চান, জানান! 😊
স্প্রিং বুট ক্লায়েন্টে Integration Testing ব্যবহার করে API রেসপন্স যাচাই করার জন্য আপনাকে একটি সঠিক টেস্ট সেটআপ তৈরি করতে হবে। স্প্রিং বুটের জন্য @SpringBootTest
, TestRestTemplate
, অথবা WebTestClient
ব্যবহার করে API-এর ইন্টিগ্রেশন টেস্ট করা যায়।
নিচে উদাহরণসহ Integration Testing-এর প্রক্রিয়া দেখানো হলো:
pom.xml
-এ টেস্টিংয়ের জন্য নিচের ডিপেনডেন্সি যোগ করুন:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
Gradle ব্যবহার করলে:
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.boot:spring-boot-starter-webflux'
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.http.ResponseEntity;
import static org.assertj.core.api.Assertions.assertThat;
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class ApiIntegrationTest {
@Autowired
private TestRestTemplate restTemplate;
@Test
public void testGetApiResponse() {
String url = "/api/resource"; // আপনার এন্ডপয়েন্ট
ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
assertThat(response.getStatusCodeValue()).isEqualTo(200); // HTTP Status চেক
assertThat(response.getBody()).contains("expected content"); // কনটেন্ট যাচাই
}
}
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.reactive.server.WebTestClient;
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class ReactiveApiIntegrationTest {
private final WebTestClient webTestClient;
public ReactiveApiIntegrationTest(WebTestClient.Builder webTestClientBuilder) {
this.webTestClient = webTestClientBuilder
.baseUrl("http://localhost:8080") // আপনার অ্যাপের বেস URL
.build();
}
@Test
public void testGetApiResponse() {
webTestClient.get()
.uri("/api/resource")
.exchange()
.expectStatus().isOk() // HTTP Status যাচাই
.expectBody()
.jsonPath("$.key").isEqualTo("expectedValue"); // JSON ফিল্ড যাচাই
}
}
WireMock ব্যবহার করে বাইরের API গুলোর জন্য সিমুলেটেড রেসপন্স তৈরি করা যায়।
<dependency>
<groupId>com.github.tomakehurst</groupId>
<artifactId>wiremock</artifactId>
<scope>test</scope>
</dependency>
import com.github.tomakehurst.wiremock.client.WireMock;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.web.reactive.function.client.WebClient;
import static com.github.tomakehurst.wiremock.client.WireMock.*;
@SpringBootTest
public class WireMockIntegrationTest {
private WireMockServer wireMockServer;
@Autowired
private WebClient.Builder webClientBuilder;
@BeforeEach
public void setup() {
wireMockServer = new WireMockServer(8089); // WireMock Server এর পোর্ট
wireMockServer.start();
WireMock.configureFor("localhost", 8089);
}
@AfterEach
public void teardown() {
wireMockServer.stop();
}
@Test
public void testExternalApiCall() {
// Mock API Response
stubFor(get(urlEqualTo("/external-api"))
.willReturn(aResponse()
.withStatus(200)
.withBody("{\"message\": \"success\"}")));
// Call API
WebClient webClient = webClientBuilder.baseUrl("http://localhost:8089").build();
String response = webClient.get()
.uri("/external-api")
.retrieve()
.bodyToMono(String.class)
.block();
// Assertion
assertThat(response).contains("success");
}
}
টেস্ট চালানোর সময়:
@SpringBootTest
অ্যাপ্লিকেশনের পুরো প্রসঙ্গ লোড করে।mvn test
# বা
gradle test
উপরের উদাহরণগুলোর মাধ্যমে স্প্রিং বুট ক্লায়েন্টের জন্য সহজেই Integration Testing সেটআপ এবং API রেসপন্স যাচাই করতে পারবেন।
স্প্রিং বুট ক্লায়েন্টের টেস্টিং করতে হলে সাধারণত আপনি REST API কলগুলোর সঠিক কার্যকারিতা এবং ফলাফল নিশ্চিত করতে MockWebServer
, MockRestServiceServer
, অথবা WebClient
-এর টেস্টিং ফ্রেমওয়ার্ক ব্যবহার করবেন।
MockWebServer
হলো একটি টুল যা API কলগুলিকে মক করার জন্য ব্যবহৃত হয়। এটি সহজেই HTTP সার্ভার সিমুলেট করতে পারে।
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>mockwebserver</artifactId>
<scope>test</scope>
</dependency>
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.reactive.function.client.WebClient;
@Configuration
public class WebClientConfig {
@Bean
public WebClient webClient(WebClient.Builder builder) {
return builder.build();
}
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.client.WebClient;
@Service
public class ApiService {
@Autowired
private WebClient webClient;
public String getApiResponse(String url) {
return webClient.get()
.uri(url)
.retrieve()
.bodyToMono(String.class)
.block(); // For synchronous testing
}
}
import okhttp3.mockwebserver.MockResponse;
import okhttp3.mockwebserver.MockWebServer;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import static org.junit.jupiter.api.Assertions.assertEquals;
@SpringBootTest
public class ApiServiceTest {
@Autowired
private ApiService apiService;
private MockWebServer mockWebServer;
@BeforeEach
void setUp() throws Exception {
mockWebServer = new MockWebServer();
mockWebServer.start();
}
@AfterEach
void tearDown() throws Exception {
mockWebServer.shutdown();
}
@Test
void testGetApiResponse() {
// Mock response
mockWebServer.enqueue(new MockResponse()
.setBody("{\"message\":\"Hello, World!\"}")
.addHeader("Content-Type", "application/json"));
String baseUrl = mockWebServer.url("/").toString();
String response = apiService.getApiResponse(baseUrl);
// Assertion
assertEquals("{\"message\":\"Hello, World!\"}", response);
}
}
MockRestServiceServer
হল Spring Framework-এর একটি টুল, যা RestTemplate
টেস্ট করতে ব্যবহৃত হয়।
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
@Service
public class RestTemplateService {
@Autowired
private RestTemplate restTemplate;
public String getApiResponse(String url) {
return restTemplate.getForObject(url, String.class);
}
}
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.client.MockRestServiceServer;
import org.springframework.web.client.RestTemplate;
import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo;
import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess;
import static org.junit.jupiter.api.Assertions.assertEquals;
@SpringBootTest
public class RestTemplateServiceTest {
@Autowired
private RestTemplate restTemplate;
@Autowired
private RestTemplateService restTemplateService;
private MockRestServiceServer mockServer;
@BeforeEach
void setUp() {
mockServer = MockRestServiceServer.createServer(restTemplate);
}
@Test
void testGetApiResponse() {
// Mock response
String mockResponse = "{\"message\":\"Hello, RestTemplate!\"}";
mockServer.expect(requestTo("http://mock-api.com"))
.andRespond(withSuccess(mockResponse, org.springframework.http.MediaType.APPLICATION_JSON));
String response = restTemplateService.getApiResponse("http://mock-api.com");
// Assertion
assertEquals("{\"message\":\"Hello, RestTemplate!\"}", response);
}
}
WebTestClient
একটি রিয়াক্টিভ টেস্ট টুল, যা WebClient-সহ অন্যান্য রিয়াক্টিভ স্ট্যাক টেস্ট করার জন্য ব্যবহৃত হয়।
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.reactive.server.WebTestClient;
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class WebClientIntegrationTest {
@Autowired
private WebTestClient webTestClient;
@Test
void testGetApi() {
webTestClient.get().uri("/api/endpoint")
.exchange()
.expectStatus().isOk()
.expectBody(String.class)
.isEqualTo("{\"message\":\"Hello, WebClient!\"}");
}
}
এই পদ্ধতিগুলি ব্যবহার করে আপনি স্প্রিং বুট ক্লায়েন্টের কার্যকারিতা নির্ভরযোগ্যভাবে টেস্ট করতে পারবেন।
Read more